Keeper
Deposit
deposit.go
is responsible for recording and managing the user's deposit behavior.
The assets that the user deposited are not immediately transferred to the other zone,
but are transferred to the ibc-controller address between the supernova and the other zone.
These assets are periodically transferred to the ibc-host address of the other zone and deposited automatically.
SetDepositRecord
func (k Keeper) SetDepositRecord(ctx sdk.Context, msg *types.DepositRecord) {}
SetDepositRecord
stores the contents of the DepositRecord
message entered as an input in the store.
GetUserDepositRecord
func (k Keeper) GetUserDepositRecord(ctx sdk.Context, zoneId string, claimer sdk.AccAddress) (result *types.DepositRecord, found bool) {}
GetUserDepositRecord
gets the Deposit information from the store that corresponds to the zondId
and the claimer
address.
GetTotalDepositAmtForZoneId
func (k Keeper) GetTotalDepositAmtForZoneId(ctx sdk.Context, zoneId, denom string, state types.DepositStatusType) sdk.Coin {}
GetTotalDepositAmtForZoneId
returns the sum of all Deposit coins corresponding to a specified zoneId.
GetTotalDepositAmtForUserAddr
func (k Keeper) GetTotalDepositAmtForUserAddr(ctx sdk.Context, userAddr, denom string) sdk.Coin {}
GetTotalDepositAmtForUserAddr
returns the sum of the user's address
entered as input and the deposit coin corresponding to the coin denom
.
SetDepositOracleVersion
func (k Keeper) SetDepositOracleVersion(ctx sdk.Context, zoneId string, state types.DepositStatusType, oracleVersion uint64) {}
SetDepositOracleVersion
updates the Oracle version for recorded Deposit requests.
This action is required for the correct equity calculation.
ChangeDepositState
func (k Keeper) ChangeDepositState(ctx sdk.Context, zoneId string, preState, postState types.DepositStatusType) bool {}
ChangeDepositState
updates the deposit records corresponding to the preState to postState.
This operation runs in the hook after the remote deposit is run.
SetDelegateRecordVersion
func (k Keeper) SetDelegateRecordVersion(ctx sdk.Context, zoneId string, state types.DepositStatusType, version uint64) bool {}
SetDelegateRecordVersion
updates the deposit version performed by the bot for the state of the deposit records corresponding to zoneId.
DeleteRecordedDepositItem
func (k Keeper) DeleteRecordedDepositItem(ctx sdk.Context, zoneId string, depositor sdk.AccAddress, state types.DepositStatusType) error {}
DeleteRecordedDepositItem
deletes the records corresponding to state among the depositor's
assets deposited in the zone corresponding to zoneId
.
GetAllAmountNotMintShareToken
func (k Keeper) GetAllAmountNotMintShareToken(ctx sdk.Context, zone *icacontroltypes.RegisteredZone) (sdk.Coin, error) {}
GetAllAmountNotMintShareToken
returns the sum of assets that have not yet been issued by the user among the assets that have been deposited.
IterateDepositRecord
func (k Keeper) IterateDepositRecord(ctx sdk.Context, fn func(index int64, depositRecord types.DepositRecord) (stop bool)) {}
IterateDepositRecord
navigates all deposit requests.
Undelegate
undelegate.go
is responsible for recording and managing the user's undelegation behavior.
Undelegate takes more than a few weeks to complete.
In addition, cosmos chains have a limit on the number of undelegate requests that can be applied at once.
Therefore, the Undelegate request requested by the user is saved as PendingUndelegate
.
Once every few days, we collect the PendingUndelegate request and request to release the delegation.
SetUndelegateRecord
func (k Keeper) SetUndelegateRecord(ctx sdk.Context, record *types.UndelegateRecord) {}
SetUndelegateRecord
writes a record of the user's undelegation actions.
GetUndelegateRecord
func (k Keeper) GetUndelegateRecord(ctx sdk.Context, zoneId, delegator string) (result *types.UndelegateRecord, found bool) {}
GetUndelegateRecord
returns the record corresponding to zoneId and delegator among the user's undelegation records.
GetAllUndelegateRecord
func (k Keeper) GetAllUndelegateRecord(ctx sdk.Context, zoneId string) []*types.UndelegateRecord {}
GetAllUndelegateRecord
returns all undelegate records corresponding to zoneId
.
GetUndelegateAmount
func (k Keeper) GetUndelegateAmount(ctx sdk.Context, snDenom string, zone icacontroltypes.RegisteredZone, version uint64, state types.UndelegatedStatusType) (sdk.Coin, sdk.Int) {}
GetUndelegateAmount
gets the information that corresponds to the zone during the de-delegation history.
ChangeUndelegateState
func (k Keeper) ChangeUndelegateState(ctx sdk.Context, zoneId string, state types.UndelegatedStatusType) {}
ChangeUndelegateState
changes the status for recorded undelegation.
states
UNDELEGATE_REQUEST_USER
Just requested undelegate by user. It is not in undelegate period.
UNDELEGATE_REQUEST_ICA
Requested by ICA, It is in undelegate period.
GetUndelegateVersionStore
func (k Keeper) GetUndelegateVersionStore(ctx sdk.Context) prefix.Store {}
GetUndelegateVersionStore
returns the store that stores the UndelegateVersion data.
The un-delegation task is periodically operated by the bot, so it stores the version for the last action.
SetUndelegateVersion
func (k Keeper) SetUndelegateVersion(ctx sdk.Context, zoneId string, version uint64) {}
SetUndelegateVersion
sets the new undelgate Version.
GetUndelegateVersion
func (k Keeper) GetUndelegateVersion(ctx sdk.Context, zoneId string) uint64 {}
GetUndelegateVersion
returns the latest un-delegation version.
SetUndelegateRecordVersion
func (k Keeper) SetUndelegateRecordVersion(ctx sdk.Context, zoneId string, state types.UndelegatedStatusType, version uint64) bool {}
SetUndelegateRecordVersion
navigates undelegate records and updates version for records corresponding to zoneId and state.
DeleteUndelegateRecords
func (k Keeper) DeleteUndelegateRecords(ctx sdk.Context, zoneId string, state types.UndelegatedStatusType) {}
DeleteUndelegateRecords
deletes records corresponding to zoneId
and state for undelegate records.
IterateUndelegatedRecords
func (k Keeper) IterateUndelegatedRecords(ctx sdk.Context, fn func(index int64, undelegateInfo *types.UndelegateRecord) (stop bool)) {}
IterateUndelegatedRecords
navigates de-delegation records.
Claim
claim.go
is responsible for the logic of issuing the deposited asset as an snAsset.
ClaimShareToken
func (k Keeper) ClaimShareToken(ctx sdk.Context, zone *icacontroltypes.RegisteredZone, asset sdk.Coin) (sdk.Coin, error) {}
ClaimShareToken
is used when user want to claim their share token.
It calculates user's share and the amount of claimable share token.
MintTo
func (k Keeper) MintTo(ctx sdk.Context, claimer sdk.AccAddress, mintCoin sdk.Coin) error {}
MintTo
mints sn-token(share token) regard with deposited token to claimer.
TotalClaimableAssets
func (k Keeper) TotalClaimableAssets(ctx sdk.Context, zone icacontroltypes.RegisteredZone, claimer sdk.AccAddress) (*sdk.Coin, error) {}
TotalClaimableAssets
returns the total amount of claimable snAsset.
CalculateDepositAlpha
func (k Keeper) CalculateDepositAlpha(userDepositAmt, totalShareTokenSupply, totalStakedAmount *big.Int) *big.Int {}
CalculateDepositAlpha
calculates alpha value.
This function is used when calculating the amount of snAsset issued.
DepositAlpha = userDepositAmount / totalStakedAmount
Issued snAsset = Alpha * totalShareTokenSupply
CalculateWithdrawAlpha
func (k Keeper) CalculateWithdrawAlpha(burnedStTokenAmt, totalShareTokenSupply, totalStakedAmount *big.Int) *big.Int {}
CalculateWithdrawAlpha
calculates lambda value.
This function is used when calculating the amount of native coin issued with burning snAsset.
WithdrawAlpha = userWithdrawAmount / totalStakedAmount
Issued coin = Lambda * totalShareTokenSupply
GetSnDenomForIBCDenom
func (k Keeper) GetSnDenomForIBCDenom(ctx sdk.Context, ibcDenom string) (string, error) {}
GetSnDenomForIBCDenom
changes the IBCDenom
to the appropriate SnDenom
.
GetTotalStakedForLazyMinting
func (k Keeper) GetTotalStakedForLazyMinting(ctx sdk.Context, denom, transferPortId, transferChanId string) (sdk.Coin, error) {}
GetTotalStakedForLazyMinting
returns the sum of coins delegated to the Host chain, which have not been issued snAsset.
ConvertWAssetToSnAssetDecimal
func (k Keeper) ConvertWAssetToSnAssetDecimal(amount *big.Int, decimal int64, denom string) sdk.Coin {}
ConvertWAssetToSnAssetDecimal
changes the common coin to snAsset's denom and decimal.
ConvertSnAssetToWAssetDecimal
func (k Keeper) ConvertSnAssetToWAssetDecimal(amount *big.Int, decimal int64, denom string) sdk.Coin {}
ConvertSnAssetToWAssetDecimal
changes snAsset to matching coin denim and decimal.
Delegation
delegation.go
manages metadata for periodic remote delegations.
Because remote delegation occurs once in a few days, it manages the last remote delegation version.
GetDelegateVersionStore
func (k Keeper) GetDelegateVersionStore(ctx sdk.Context) prefix.Store {}
GetDelegateVersionStore
returns store for delegation.
SetDelegateVersion
func (k Keeper) SetDelegateVersion(ctx sdk.Context, zoneId string, version uint64) {}
SetDelegateVersion
sets version for delegation corresponding to zone-id records.
GetDelegateVersion
func (k Keeper) GetDelegateVersion(ctx sdk.Context, zoneId string) uint64 {}
GetDelegateVersion
returns version for delegation corresponding to zone-id records.
Withdraw
withdraw.go
is responsible for the logic of issuing the withdraw action.
IcaWithdraw
uses ICA to release the delegation and imports the assets in Zone's vault to Supernova.
Withdraw
withdraws assets transferred to Supernova via IcaWithdraw.
SetWithdrawRecord
func (k Keeper) SetWithdrawRecord(ctx sdk.Context, record *types.WithdrawRecord) {}
SetWithdrawRecord
stores the withdraw record.
GetWithdrawRecord
func (k Keeper) GetWithdrawRecord(ctx sdk.Context, zoneId, withdrawer string) (result *types.WithdrawRecord, found bool) {}
GetWithdrawRecord
returns withdraw record item by key.
DeleteWithdrawRecord
func (k Keeper) DeleteWithdrawRecord(ctx sdk.Context, withdraw types.WithdrawRecord) {}
DeleteWithdrawRecord
removes withdraw record.
GetWithdrawVersionStore
func (k Keeper) GetWithdrawVersionStore(ctx sdk.Context) prefix.Store {}
GetWithdrawVersionStore
returns store for Withdraw-version.
SetWithdrawVersion
func (k Keeper) SetWithdrawVersion(ctx sdk.Context, zoneId string, version uint64) {}
SetWithdrawVersion
set withdraw version for zone id.
GetWithdrawVersion
func (k Keeper) GetWithdrawVersion(ctx sdk.Context, zoneId string) uint64 {}
GetWithdrawVersion
returns current withdraw-version.
SetWithdrawRecordVersion
func (k Keeper) SetWithdrawRecordVersion(ctx sdk.Context, zoneId string, state types.WithdrawStatusType, version uint64) bool {}
SetWithdrawRecordVersion
set new version to withdraw record corresponding to zoneId and state.
SetWithdrawRecords
func (k Keeper) SetWithdrawRecords(ctx sdk.Context, zoneId string, time time.Time) {}
SetWithdrawRecords
write multiple withdraw record.
GetWithdrawAmt
func (k Keeper) GetWithdrawAmt(ctx sdk.Context, amt sdk.Coin) (sdk.Coin, error) {}
GetWithdrawAmt
is used for calculating the amount of coin user can withdraw after un-delegate. This function is executed
when ICA un-delegate call executed, and calculate using the balance of user's share coin.
GetWithdrawAmountForUser
func (k Keeper) GetWithdrawAmountForUser(ctx sdk.Context, zoneId, denom string, withdrawer string) sdk.Coin {}
GetWithdrawAmountForUser
returns withdraw record corresponding to zone id and denom.
GetTotalWithdrawAmountForZoneId
func (k Keeper) GetTotalWithdrawAmountForZoneId(ctx sdk.Context, zoneId, denom string, blockTime time.Time) sdk.Coin {}
GetTotalWithdrawAmountForZoneId
returns total withdraw amount corresponding to zond id and denom.
ClaimWithdrawAsset
func (k Keeper) ClaimWithdrawAsset(ctx sdk.Context, from sdk.AccAddress, withdrawer sdk.AccAddress, amt sdk.Coin) error {}
ClaimWithdrawAsset
is used when user want to claim their asset which is after undeleagted.
IsAbleToWithdraw
func (k Keeper) IsAbleToWithdraw(ctx sdk.Context, from sdk.AccAddress, amt sdk.Coin) bool {}
IsAbleToWithdraw
returns if user can withdraw their asset.
It refers nova ICA account. If ICA account's balance is greater than user withdraw request amount, this function returns true.
IterateWithdrawRecords
func (k Keeper) IterateWithdrawRecords(ctx sdk.Context, fn func(index int64, withdrawInfo *types.WithdrawRecord) (stop bool)) {}
IterateWithdrawRecords
iterate all withdraw records.
ChangeWithdrawState
func (k Keeper) ChangeWithdrawState(ctx sdk.Context, zoneId string, preState, postState types.WithdrawStatusType) {}
ChangeWithdrawState
set new withdraw state from preState to postState.